/**
 * Agent账号管理API
 */
import request from '@/utils/request'

/**
 * 获取Agent客户端列表
 * @param {Object} query - 查询参数
 * @returns {Promise}
 */
export function getAgentClientList(query) {
  return request({
    url: '/agent/client/list',
    method: 'get',
    params: query
  })
}

/**
 * 获取在线Agent客户端列表
 * @returns {Promise}
 */
export function getOnlineClients() {
  return request({
    url: '/agent/client/online/list',
    method: 'get'
  })
}

/**
 * 更新Agent客户端信息
 * @param {Number} clientId - 客户端数据库ID
 * @param {Object} data - 更新数据
 * @returns {Promise}
 */
export function updateClient(clientId, data) {
  return request({
    url: `/agent/client/${clientId}`,
    method: 'put',
    data: data
  })
}

/**
 * 更新Agent客户端备注
 * @param {String} clientId - 客户端ID
 * @param {String} remark - 备注内容
 * @returns {Promise}
 */
export function updateClientRemark(clientId, remark) {
  return request({
    url: `/agent/client/remark/${clientId}`,
    method: 'put',
    params: { remark }
  })
}

/**
 * 发送命令到Agent客户端
 * @param {String} clientId - 客户端ID
 * @param {Object} command - 命令数据
 * @returns {Promise}
 */
export function sendCommandToClient(clientId, command) {
  return request({
    url: `/agent/client/${clientId}/command`,
    method: 'post',
    data: command
  })
}

/**
 * 搜索调度器：启动
 */
export function schedulerStart(config) {
  return request({
    url: '/scheduler/start',
    method: 'post',
    data: config
  })
}

/**
 * 搜索调度器：停止（支持多用户）
 * @param {Object} config - 可选配置 {user_id: number}
 */
export function schedulerStop(config = {}) {
  return request({
    url: '/scheduler/stop',
    method: 'post',
    data: config
  })
}

/**
 * 搜索调度器：状态（支持多用户）
 * @param {Object} params - 可选参数 {user_id: number}
 */
export function schedulerStatus(params = {}) {
  return request({
    url: '/scheduler/status',
    method: 'get',
    params
  })
}

/**
 * 取消订单
 * @param {Number} orderRecordId - 订单记录ID
 * @param {String} reason - 取消原因（默认：不想买了）
 * @returns {Promise}
 */
export function cancelOrder(orderRecordId, reason = '不想买了') {
  return request({
    url: '/agent/order/cancel',
    method: 'post',
    data: { order_record_id: orderRecordId, reason }
  })
}

/**
 * 删除订单记录
 * @param {Number} orderId - 订单记录ID
 * @returns {Promise}
 */
export function deleteOrder(orderId) {
  return request({
    url: `/agent/order/${orderId}`,
    method: 'delete'
  })
}

/**
 * 获取Agent运行日志
 * @param {String} clientId - 客户端ID（可选，用于过滤）
 * @param {Number} lines - 返回行数，默认500
 * @returns {Promise}
 */
export function getAgentLogs(clientId = null, lines = 500) {
  const params = {
    lines: lines
  }
  // 只有当clientId有值且不为空字符串时才添加该参数
  if (clientId != null && String(clientId).trim() !== '') {
    params.client_id = String(clientId).trim()
  }
  return request({
    url: '/agent/task/logs',
    method: 'get',
    params: params
  })
}

/**
 * 获取下单记录列表
 * @param {Object} query - 查询参数
 * @returns {Promise}
 */
export function getOrderList(query) {
  return request({
    url: '/agent/order/list',
    method: 'get',
    params: query
  })
}

/**
 * 获取搜索记录列表
 * @param {Object} query 查询参数
 * @returns {Promise}
 */
export function getSearchRecordList(query) {
  return request({
    url: '/agent/search-record/list',
    method: 'get',
    params: query
  })
}

/**
 * 获取卖家对话消息
 * @param {Object} query 查询参数
 * @returns {Promise}
 */
export function getSellerMessageList(query) {
  return request({
    url: '/agent/chat/messages',
    method: 'get',
    params: query
  })
}

/**
 * 创建卖家对话消息（调试/补录）
 * @param {Object} data 消息数据
 * @returns {Promise}
 */
export function createSellerMessage(data) {
  return request({
    url: '/agent/chat/messages',
    method: 'post',
    data
  })
}

/**
 * 删除卖家消息
 * @param {Number} messageId 消息ID
 * @returns {Promise}
 */
export function deleteSellerMessage(messageId) {
  return request({
    url: `/agent/chat/messages/${messageId}`,
    method: 'delete'
  })
}

/**
 * 手动下单
 * @param {Object} itemData - 商品数据 {item_id, title, price, keyword}
 * @param {Object} options - 选项 {allow_search_accounts: boolean}
 * @returns {Promise}
 */
export function manualOrder(itemData, options = {}) {
  return request({
    url: '/agent/order/manual',
    method: 'post',
    data: itemData,
    params: {
      allow_search_accounts: options.allow_search_accounts || false
    }
  })
}

/**
 * 手动搜索
 * @param {Object} searchConfig - 搜索配置 {keyword, min_price, max_price}
 * @returns {Promise}
 */
export function manualSearch(searchConfig) {
  return request({
    url: '/agent/task/manual-search',
    method: 'post',
    data: searchConfig
  })
}

/**
 * 保存当前用户的搜索任务配置到数据库
 * @param {Object} config - 搜索配置
 * @returns {Promise}
 */
export function saveCurrentConfig(config) {
  return request({
    url: '/agent/task/save-current-config',
    method: 'post',
    data: config
  })
}

/**
 * 获取当前用户的搜索任务配置（支持管理员查看其他用户）
 * @param {Object} params - 可选参数 {filter_user_id: number}（仅管理员可用）
 * @returns {Promise}
 */
export function getCurrentConfig(params = {}) {
  return request({
    url: '/agent/task/get-current-config',
    method: 'get',
    params
  })
}

/**
 * 获取最新的搜索结果（从数据库）
 * @param {Object} params - 查询参数 {keyword, limit}
 * @returns {Promise}
 */
export function getRecentResults(params = {}) {
  return request({
    url: '/agent/task/get-recent-results',
    method: 'get',
    params
  })
}

/**
 * 获取有任务的用户列表（仅管理员可用）
 * @returns {Promise}
 */
export function getUsersWithTasks() {
  return request({
    url: '/agent/task/users-with-tasks',
    method: 'get'
  })
}

/**
 * 分配Agent给用户（1对1分配，管理员专用）
 * @param {Object} data - 分配数据 {client_ids: [1,2,3], user_id: 5} （单个user_id）
 * @returns {Promise}
 */
export function assignAgents(data) {
  return request({
    url: '/agent/client/assign',
    method: 'post',
    data: data
  })
}

